package tech.wetech.admin.modules.system.web;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import tech.wetech.admin.core.utils.HttpUtils;
import tech.wetech.admin.core.utils.PayUrl;
import tech.wetech.admin.core.utils.Result;
import tech.wetech.admin.modules.system.po.Company;
import tech.wetech.admin.modules.system.po.PayCompanyInfo;
import tech.wetech.admin.modules.system.service.PostCompanyInfoService;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@Controller
@RequestMapping("/unfiedpay/companyInfo")
public class PostCompanyInfoController {

    @Autowired
    private PostCompanyInfoService postCompanyInfoService;

    /*
     * @Description: 配置信息新增
     * @Author: lu
     * @Date: 2022/3/31 14:28
     * @param map:
     * @return: tech.wetech.admin.core.utils.Result
     **/
    @ResponseBody
    @PostMapping("/add")
    public Result add(@RequestBody Map<String,Object> map) {
        JSONObject jsonObjects = JSONObject.parseObject(JSON.toJSONString(map.get("CompanyInfo")));
        PayCompanyInfo payCompanyInfo= JSONObject.parseObject(jsonObjects.toJSONString(), PayCompanyInfo.class);
        Map<String,String> tokenMap=new HashMap<>();
        tokenMap.put("token", String.valueOf(map.get("token")));
        String json= null;
//        try {
//            HttpUtils httpUtils=new HttpUtils(false);
//            json = httpUtils.sendGet(PayUrl.token,tokenMap);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        JSONObject jsonObject= JSON.parseObject(json);
//        if (jsonObject.getInteger("code")==200){
            return postCompanyInfoService.createUnfiedpayCompanyInfo(payCompanyInfo);
//        }else {
//            Result result=new Result();
//            result.setCode("0002");
//            result.setMsg("token验证不过");
//            return result;
//        }
    }

    /*
     * @Description:配置信息查询
     * @Author: lu
     * @Date: 2022/3/31 15:14
     * @param map:
     * @return: tech.wetech.admin.core.utils.Result
     **/
    @ResponseBody
    @PostMapping("/query")
    public Result query(@RequestBody Map<String,Object> map) {
        Map<String,String> tokenMap=new HashMap<>();
        tokenMap.put("token", String.valueOf(map.get("token")));
        String json= null;
//        try {
//            HttpUtils httpUtils=new HttpUtils(false);
//            json = httpUtils.sendGet(PayUrl.token,tokenMap);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        JSONObject jsonObject= JSON.parseObject(json);
//        if (jsonObject.getInteger("code")==200){
            return postCompanyInfoService.query(String.valueOf(map.get("companyId")));
//        }else {
//            Result result=new Result();
//            result.setCode("0002");
//            result.setMsg("token验证不过");
//            return result;
//        }
    }

    /*
     * @Description:配置信息修改
     * @Author: lu
     * @Date: 2022/3/31 15:15
     * @param map:
     * @return: tech.wetech.admin.core.utils.Result
     **/
    @ResponseBody
    @PostMapping("/revise")
    public Result revise(@RequestBody Map<String,Object> map) {
        JSONObject jsonObjects = JSONObject.parseObject(JSON.toJSONString(map.get("CompanyInfo")));
        PayCompanyInfo payCompanyInfo= JSONObject.parseObject(jsonObjects.toJSONString(), PayCompanyInfo.class);
        Map<String,String> tokenMap=new HashMap<>();
        tokenMap.put("token", String.valueOf(map.get("token")));
//        String json= null;
//        try {
//            HttpUtils httpUtils=new HttpUtils(false);
//            json = httpUtils.sendGet(PayUrl.token,tokenMap);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        JSONObject jsonObject= JSON.parseObject(json);
//        if (jsonObject.getInteger("code")==200){
            return postCompanyInfoService.revise(payCompanyInfo);
//        }else {
//            Result result=new Result();
//            result.setCode("0002");
//            result.setMsg("token验证不过");
//            return result;
//        }
    }


    /*
     * @Description:删除配置信息
     * @Author: lu
     * @Date: 2022/3/31 16:48
     * @param map:
     * @return: tech.wetech.admin.core.utils.Result
     **/
    @ResponseBody
    @PostMapping("/deletes")
    public Result deletes(@RequestBody Map<String,Object> map) {
        Map<String,String> tokenMap=new HashMap<>();
        tokenMap.put("token", String.valueOf(map.get("token")));
//        String json= null;
//        try {
//            HttpUtils httpUtils=new HttpUtils(false);
//            json = httpUtils.sendGet(PayUrl.token,tokenMap);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        JSONObject jsonObject= JSON.parseObject(json);
//        if (jsonObject.getInteger("code")==200){
            return postCompanyInfoService.deletes(map);
//        }else {
//            Result result=new Result();
//            result.setCode("0002");
//            result.setMsg("token验证不过");
//            return result;
//        }
    }
    /*
     * @Description: 上传文件
     * @Author: lu
     * @Date: 2022/3/31 15:27
     * @param multipartRequst:
     * @return: java.lang.String
     **/
    @ResponseBody
    @PostMapping("/shang")
    public Map<String,Object> shang(MultipartHttpServletRequest multipartRequst) {

        Map<String,Object> map=new HashMap<>();

        if(multipartRequst == null){
            map.put("code",1);
            map.put("msg","服务请求失败,MultipartHttpServletRequest空指针");
            return map;
        }

        Map<String,String> tokenMap=new HashMap<>();
        tokenMap.put("token", multipartRequst.getParameter("token"));
//        String json= null;
//        try {
//            HttpUtils httpUtils=new HttpUtils(false);
//            json = httpUtils.sendGet(PayUrl.token,tokenMap);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        JSONObject jsonObject= JSON.parseObject(json);
//        if (jsonObject.getInteger("code")!=200){
//            map.put("code",2);
//            map.put("msg","token验证不过");
//            return map;
//        }
        System.out.println(multipartRequst.getParameter("mchid"));
        MultipartFile multipartFile = multipartRequst.getFile("file");
        String realpath = "";
        //获取文件名
        String name = "";
        if (multipartFile != null) {
            long size = multipartFile.getSize();
            name = multipartFile.getOriginalFilename();//直接返回文件的名字
            String subffix = name.substring(name.lastIndexOf(".") + 1, name.length());//我这里取得文件后缀
            String fileName = multipartRequst.getParameter("mchid");//文件保存进来，我给他重新命名，数据库保存有原本的名字，所以输出的时候再把他附上原本的名字就行了。
            //String filepath ="/usr/local/app/apache-tomcat-9.0.24/webapps/apiclient_cert/";//获取项目路径到webapp
            String filepath ="D:\\temp";
            File file = new File(filepath);
            if (!file.exists()) {//目录不存在就创建
                file.mkdirs();
            }
            try {
                multipartFile.transferTo(new File(file + "/" + fileName + "." + subffix));//保存文件
            } catch (IOException e) {
                e.printStackTrace();
                map.put("code",3);
                map.put("msg","上传失败");
                return map;
            }
            map.put("code",200);
            map.put("msg","上传成功");
            return map;
        }
        map.put("code",3);
        map.put("msg","上传失败");
        return map;
    }
}
